/*
 *******************       UPnP发现服务       ******************
 
 功能描述
 - 搜索局域网查找可连接的设备，生成 WXUPnPDevice
 - 将本地资源加载到服务器中
 
 */

#import <Foundation/Foundation.h>
#import <Photos/Photos.h>

@class WXUPnPDevice;

@protocol WXUPnPServerDelegate <NSObject>

/// 搜索结果
/// @param devices 所有已搜索到的设备
- (void)upnpSearchChangeWithResults:(NSArray <WXUPnPDevice *>*)devices;

/// 搜索停止
/// @param error 失败原因
- (void)upnpSearchCloseWithError:(NSError *)error;

@optional
///  搜索失败
/// @param error 失败原因
- (void)upnpSearchError:(NSError *)error;

@end

@interface WXUPnPServer : NSObject

@property (nonatomic, weak) id<WXUPnPServerDelegate>delegate;

+ (instancetype)shared;

/// Activate
/// @param appId     appId
/// @param appSecret activation code
+ (void)registWithAppId:(NSString *)appId appSecret:(NSString *)appSecret;

/// 启动搜索服务器
- (void)start;

/// 停止搜索服务器
- (void)stop;

/// 获取已经发现的设备
- (NSArray<WXUPnPDevice *> *)getDeviceList;

/// 开启本地资源服务器，投屏本地相册图片视频时需要使用
- (void)startNativeServer;

/// 本地视频或图片文件生成路径，用于投屏传输
/// @param asset 本地多媒体资源
/// @return 生成的本地路径，用于UPnPRenderer设置setAVTransportURL
- (NSString *)generateURL:(PHAsset *)asset;

@end
